Release It!: Design and Deploy Production-Ready Software

Release It!: Design and Deploy Production-Ready Software

  • Downloads:5524
  • Type:Epub+TxT+PDF+Mobi
  • Create Date:2021-05-27 11:57:09
  • Update Date:2025-09-06
  • Status:finish
  • Author:Michael T. Nygard
  • ISBN:1680502395
  • Environment:PC/Android/iPhone/iPad/Kindle

Summary

A single dramatic software failure can cost a company millions of dollars - but can be avoided with simple changes to design and architecture。 This new edition of the best-selling industry standard shows you how to create systems that run longer, with fewer failures, and recover better when bad things happen。 New coverage includes DevOps, microservices, and cloud-native architecture。 Stability antipatterns have grown to include systemic problems in large-scale systems。 This is a must-have pragmatic guide to engineering for production systems。

If you're a software developer, and you don't want to get alerts every night for the rest of your life, help is here。 With a combination of case studies about huge losses - lost revenue, lost reputation, lost time, lost opportunity - and practical, down-to-earth advice that was all gained through painful experience, this book helps you avoid the pitfalls that cost companies millions of dollars in downtime and reputation。 Eighty percent of project life-cycle cost is in production, yet few books address this topic。

This updated edition deals with the production of today's systems - larger, more complex, and heavily virtualized - and is the first book to cover chaos engineering, the discipline of applying randomness and deliberate stress to reveal systematic problems。 Build systems that survive the real world, avoid downtime, implement zero-downtime upgrades and continuous delivery, and make cloud-native applications resilient。 Examine ways to architect, design, and build software - particularly distributed systems - that stands up to the typhoon winds of a flash mob, a Slashdotting, or a link on Reddit。 Take a hard look at software that failed the test and find ways to make sure your software survives。

To skip the pain and get the experience。。。get this book。

Download

Reviews

هدى

The book is very useful and full of knowledge and also examples of use cases to the problems or patterns which the author is explaining

Michał Kowalcze

A thorough overview of any aspect related to delivery and maintenance of business value to users。 It might be not up to date when it comes to tools, but tools are something that evolve over time。 Concepts, directions, areas of focus remains and these are clearly present。

Matas

A must read for anyone who want to build reliable and scalable software。 Book starts with easy to apply stability patterns and improve to advanced architecture desicions。 It also covers topics how to scale and overcome technical and organizational limitations by applying evolutionary strategies to software engineering。

Viktor Malyshev

That's a decent book on troubleshooting, developing, and releasing software。 The author has a HUGE experience in that, sharing lots of stories and playbooks。 I really enjoyed the examples。Book has pretty much stuff for any engineer to figure out how to actually release anything。 From OSI model to CICD and processes for teams。 Can be easily used as a handbook。I've rated it as 3 stars because I already knew most of it and I found there is a lot of water in the book。 It can be 2 times smaller。 Anyw That's a decent book on troubleshooting, developing, and releasing software。 The author has a HUGE experience in that, sharing lots of stories and playbooks。 I really enjoyed the examples。Book has pretty much stuff for any engineer to figure out how to actually release anything。 From OSI model to CICD and processes for teams。 Can be easily used as a handbook。I've rated it as 3 stars because I already knew most of it and I found there is a lot of water in the book。 It can be 2 times smaller。 Anyway, I've really enjoyed reading it but was skipping big chunks sometimes。 。。。more

Mykhailo Pohoda

Mostly philosophical, slightly outdated view on designing scalable systems。

Daniel Schulte

I found this to be an interesting book。 I especially enjoyed the case studies/stories that it used from the author's personal experiences to illustrate his points。 I fully understand that these are just anecdotes and that they don't replace a good analysis of hundreds of different yet similar situations。 However, the anecdotes are familiar enough that they do remind us of our own experiences running cloud services and trying to get some sleep at night。It was interesting。 Not great, but interesti I found this to be an interesting book。 I especially enjoyed the case studies/stories that it used from the author's personal experiences to illustrate his points。 I fully understand that these are just anecdotes and that they don't replace a good analysis of hundreds of different yet similar situations。 However, the anecdotes are familiar enough that they do remind us of our own experiences running cloud services and trying to get some sleep at night。It was interesting。 Not great, but interesting。 。。。more

Felipe Gonçalves Marques

This book captures the essence of developing software that is not very common in other types of books and programming classes。Software is not just about creating code, it is about releasing it, operating it, and administering the system in production。 Once this is understood, the way someone develops software changes drastically。 Compatibility, monitoring, observability, etc start to become part of the design and we start to embrace change and adaptability。This book gets into the specificity of This book captures the essence of developing software that is not very common in other types of books and programming classes。Software is not just about creating code, it is about releasing it, operating it, and administering the system in production。 Once this is understood, the way someone develops software changes drastically。 Compatibility, monitoring, observability, etc start to become part of the design and we start to embrace change and adaptability。This book gets into the specificity of this with concrete examples that don't talk only about the technical aspect of the problem and solutions, but the relations between teams, the business aspect, and cost, etc。 。。。more

Mihai Cosareanu

Amazing book about the processes and design approaches of software at scale。 It assumes you know a lot about back-end development, so I wouldn't recommend this to people with little experience in software development。 I think it's more of a reference book than something that you can "learn"。It's worth an initial read through to understand some concepts and to know what you can find later on in the book, but I think the summary parts are worth revisiting in the future when reviewing the systems t Amazing book about the processes and design approaches of software at scale。 It assumes you know a lot about back-end development, so I wouldn't recommend this to people with little experience in software development。 I think it's more of a reference book than something that you can "learn"。It's worth an initial read through to understand some concepts and to know what you can find later on in the book, but I think the summary parts are worth revisiting in the future when reviewing the systems that you're working on。 。。。more

Adam

This is the book I wish I'd read before starting my career as a software engineer。 University taught me how to write and debug code, but didn't teach me anything about managing programs in production or writing reliable distributed systems that can gracefully handle the chaos of a real-world network。 This book does a great job of explaining the problems you face running code in the real, high-scale world, walking you through war stories and asking how outages could have been prevented。 Then expl This is the book I wish I'd read before starting my career as a software engineer。 University taught me how to write and debug code, but didn't teach me anything about managing programs in production or writing reliable distributed systems that can gracefully handle the chaos of a real-world network。 This book does a great job of explaining the problems you face running code in the real, high-scale world, walking you through war stories and asking how outages could have been prevented。 Then explains a bunch of programming and architecture patterns you can use to avoid that。 I really enjoyed it and highly recommend it for anyone who writes software where uptime matters。 。。。more

Ioana

While it may not be exactly about how you release software, it definitely encompasses it。 This book will teach you about operation, scale and extending and future proofing your software through hysterical anecdotes and hair-pulling war stories, and you will be a better professional for it。 I was initially a little taken aback because I was expecting the book to have more details about how you prep for a release, how you come up with a plan, your checklist if you will。 But it is more about operat While it may not be exactly about how you release software, it definitely encompasses it。 This book will teach you about operation, scale and extending and future proofing your software through hysterical anecdotes and hair-pulling war stories, and you will be a better professional for it。 I was initially a little taken aback because I was expecting the book to have more details about how you prep for a release, how you come up with a plan, your checklist if you will。 But it is more about operating gotchas, what goes beyond the actual plan。 It is for sure a technical book, the author deep dives into incidents he has experienced in terms of how load balancers might work, how exceptions may be triggered, and how threads may block each other, versioning, he doesn't steer away from any of the nasty detail。 So be prepared to put in the time and the reading focus。 The chapters are either focus on different stages in your prep pipeline, or in different levels of the stack, depending on the topic at hand。 Some of my notes during the read:- Load testing including with noise such as not waiting for requests to receive responses;- Minimise blast radius at all costs - be cynical about how your component communicates with others;- Fast fails are superior to slow or blocked calls;- Once established, a TCP connection can exist for days without being used, as long as both ends have that socket state in memory;- A bogon is a packet that got routed inefficiently and arrives late, out of sequence, and after the connection is closed;- Ways of versioning: by URL, by the 'accept' in the header- All about Circuit Breakers;- Taking down an instance is the easiest thing for a Chaos Monkey to do;- Physical redundancy is the most common form of bulkheads;- Load balancers as shock absorbers;- Queues must be finite for responses to be finite;- Servers that require a warm cache or loading reference data are not suitable for containers - opt for short initialisations sequences or startup for these。 。。。more

Arthur

The information in that book is great and relevant, however, it seems that the author tried to artificially inflate the number of pages。

Michael

Design, Performance, Security, Scalability, Deployment, Monitoring。。。 this book shares insights on how today's software should be architected。 While nothing in this book will appear really new to an experienced software architect, the whole thing is elegantly illustrated with real-worlds examples, diagrams and stories that make it fun to read。 Design, Performance, Security, Scalability, Deployment, Monitoring。。。 this book shares insights on how today's software should be architected。 While nothing in this book will appear really new to an experienced software architect, the whole thing is elegantly illustrated with real-worlds examples, diagrams and stories that make it fun to read。 。。。more

Víctor

The book is fun, easy to read and full of technical advices based on experiences。 A really good reading。

Yannick Grenzinger

Clearly a must read book where Michael T。 Nygard shares us us a tremendous amount of experience about what could go wrong in production (with horror stories you don't wand to live) and how to prevent this with stability patterns。it's also a book which gives lots of very good advice around delivery, architecture or security。The only downside of this book is sometimes there is too much ground tried to be covered and it's a bit frustrating not to have enough details to fully understand some topics。 Clearly a must read book where Michael T。 Nygard shares us us a tremendous amount of experience about what could go wrong in production (with horror stories you don't wand to live) and how to prevent this with stability patterns。it's also a book which gives lots of very good advice around delivery, architecture or security。The only downside of this book is sometimes there is too much ground tried to be covered and it's a bit frustrating not to have enough details to fully understand some topics。 。。。more

Rasmus Højte

Fantastic book with a lot of answers to questions Ive had for a long time after starting as a professional

Dario Maiocchi

It gives real from experience insight for complex systems。。Very few books talks about how to maintain and build software in production

Jevgenij

Some parts require quite a lot of experience for proper understanding, yet there is a section about how HTTP is stateless and how cookies work - c'mon! In general, the book is very poorly structured and as mentioned, provides a very unequal and often illogical covering of various topics。 However, I am willing to give it 3 stars just for the very good chapter on stability patterns。 Some parts require quite a lot of experience for proper understanding, yet there is a section about how HTTP is stateless and how cookies work - c'mon! In general, the book is very poorly structured and as mentioned, provides a very unequal and often illogical covering of various topics。 However, I am willing to give it 3 stars just for the very good chapter on stability patterns。 。。。more

Dallin Coons

Software development is much more than just writing code。 This book deals with many of the peripherals necessary to create robust systems。 This will have a place in my personal library as I know I’ll want to revisit and use as a reference。 Some of the examples and specific technologies mentioned are a bit outdated, but the general principles taught will remain relevant for the foreseeable future。

Christos Kontas

I haven't still figured out the target group of this book: software developers, QA, sysops, devops, or managers? Probably all of them, but at the same time nobody。 Also, the main focus of the book is high-performance and availability Web applications, with only minor references to other kinds of software。The techniques mentioned in the book are all of them good practices (some of them really advanced) and it is up-to-date with modern techniques, processes, and tools。I found the case-studies or p I haven't still figured out the target group of this book: software developers, QA, sysops, devops, or managers? Probably all of them, but at the same time nobody。 Also, the main focus of the book is high-performance and availability Web applications, with only minor references to other kinds of software。The techniques mentioned in the book are all of them good practices (some of them really advanced) and it is up-to-date with modern techniques, processes, and tools。I found the case-studies or personal stories too melodramatic and alien to a technical book, with author's language exceptionally hard and sophisticated, as of writing some kind of prose。Some chapters, because of their nature, become very boring comparing to others。 The most exciting (and embarrassing for a developer) chapter was about _Security_。 It is a must to be read, even by ignoring the rest of the chapters。 。。。more

Christoph Kappel

This book is difficult for me to to rate。 I think the version I've read it a bit too old, since much of the mentioned tech stuff is outdated - like Java 5。 Nevertheless, I think most of the concepts are still true and valid。What made it a bit tiresome to read are the many repetitions of previous points。 Yes, it makes perfectly sense to do that, with the idea the reader keeps it in his mind once he read it like five times。My personal learnings from this book are the idea, that experience is usual This book is difficult for me to to rate。 I think the version I've read it a bit too old, since much of the mentioned tech stuff is outdated - like Java 5。 Nevertheless, I think most of the concepts are still true and valid。What made it a bit tiresome to read are the many repetitions of previous points。 Yes, it makes perfectly sense to do that, with the idea the reader keeps it in his mind once he read it like five times。My personal learnings from this book are the idea, that experience is usually lost, since everyone with ten or more years in the business moves forward to management and juniors have to catch the work and a better reasoning why I want to use circuit breaker。I really liked the examples, I prefer it when authors explain their point on real world stuff。 。。。more

Muhammad Redho Ayassa

If you are building, maintaining, or operating software that crucial for your business, this book is worth of your time。 This book covers topics that will help us on making software stable yet adaptable so we can make frequent changes without breaking it。The author provides pretty good case studies。 He also mentions the organizational and process aspect, not just the technical side。 He don't cover much about the technical implementation but some pointers to the bleeding edge technologies are ver If you are building, maintaining, or operating software that crucial for your business, this book is worth of your time。 This book covers topics that will help us on making software stable yet adaptable so we can make frequent changes without breaking it。The author provides pretty good case studies。 He also mentions the organizational and process aspect, not just the technical side。 He don't cover much about the technical implementation but some pointers to the bleeding edge technologies are very useful so we can look at the implementation from the internet。I prefer to read this book from cover to cover to grasp the whole points of this book。 Whenever I stumble upon a problem, I would refer to the certain part of this book。 。。。more

Johannes Preisinger

I am a big fan of this book。 The main topics contained within were very relevant to my professional environment and the projects I was working on and I can highly recommend it to you If you search for a book that will help you design and deploy production software。 This book also contains a lot of great one-liners, worth being added to your citations section (if you have one) and worth remembering。 Just a few examples:"A job isn't done until the tools are put away""The net suffering in your orga I am a big fan of this book。 The main topics contained within were very relevant to my professional environment and the projects I was working on and I can highly recommend it to you If you search for a book that will help you design and deploy production software。 This book also contains a lot of great one-liners, worth being added to your citations section (if you have one) and worth remembering。 Just a few examples:"A job isn't done until the tools are put away""The net suffering in your organization is minimized if everyone thinks globally and acts locally。""Make sure to always wash your hands and clean your work surfaces after handling raw JSON"This is, from my point of view, a very entertaining style of humor, that makes the book for a much easier and lighter read, than it actually is, because some of the topics are already advanced。 If you want to go into more detail on specific topics, the book provides great references。 Either online resources or other books for an in-depth view in that specific area。The real-life examples provided in the book serve two very essential purposes, and do so very well: They make the points made after them more impactful and they make the contents of the book more relatable。It is a very good read on most topics related to bringing an application to production and gives some great insights into other companies and areas that are related to this topic。 A great reference for system design-related questions as well。 I have made a lot of notes from this book because there is actually a lot of noteworthy information in it。 The author of this book is definitely a person I would like to meet one day and if it is just to see if the humor displayed in the book translates into real life as well。 。。。more

Nahum Timerman

nightmare fuel for devsloved some of the more philosophical sections at the end, dealing with complexity, architectural and organizational principles。 reading through some of the case studies was painful as each incident describes real life catastrophes that csn happen to any tech org

Brian Di Croce

By far my favorite software engineering book。 I hope this one gets used in universities' curriculum because the knowledge that Michael Nygard shares in his book applies to today's complex and distributed software systems。 The title of the book fits very well the material being covered。 To release a software in the wild requires a certain level of maturity within the development, delivery and monitoring processes。 There are many tools available that can help in shading a light in these areas, but By far my favorite software engineering book。 I hope this one gets used in universities' curriculum because the knowledge that Michael Nygard shares in his book applies to today's complex and distributed software systems。 The title of the book fits very well the material being covered。 To release a software in the wild requires a certain level of maturity within the development, delivery and monitoring processes。 There are many tools available that can help in shading a light in these areas, but unless you understand the problem these tools help to solve, chances are that you'll probably miss the mark。 Besides sharing processes and tools to properly release a software into production, the author also dedicates a portion of the book on stability patterns: circuit breaker, graceful degradation, bulkheads, etc。 These are important tools to have in our toolbox because if you're building distributed systems that depend on the network and that are used by a lot of people or other services, chances are that at some point one of its integration points will fail。 And when it happens, you better know in development or QA, rather than in production, what the action plan is to recover the system in a working state。The author also shares stories from personal experiences working on systems that have failed at some point and how he managed to solve the problem(s)。In short, this book equips you with knowledge and tools to effectively deploy complex systems in production。。。and get a good night sleep knowing that the system is resilient enough to take of itself when trouble comes knocking at its door。 。。。more

Jose Gayo

This is a very good book for people interested in developing software for production environments。 The author presents a lot of useful patterns and advices。

Felipe Leite

Great book with lots of good information on how to build systems for production。The anecdotes and humor really make this book difficult to put down。

Luiz Rolim

Awesome book, especially the first chapters with lots of in depth low level analysis of incidents and their post mortens。Also covers several patterns and good practices to follow in order to achieve resilient systems。A must read for sr developers +

Mariano

It's a fantastic book about good software engineering from non-traditional viewpoints。It takes another approach on good practices of software architecture: it considers more than just classic quality attributes, and it makes you think you to architect your system in a way that's not only reliable and with good quality, but also easy to operate with。 Concepts such as evolutionary architecture, adaptable architecture are reivewed throughout the chapters on the last section。 In particular I enjoyed It's a fantastic book about good software engineering from non-traditional viewpoints。It takes another approach on good practices of software architecture: it considers more than just classic quality attributes, and it makes you think you to architect your system in a way that's not only reliable and with good quality, but also easy to operate with。 Concepts such as evolutionary architecture, adaptable architecture are reivewed throughout the chapters on the last section。 In particular I enjoyed to read more about how to make the architecture easy to build and integrate continuously, deploy it safely to production, and make changes on it (because, of course, "change is the defining characteristic of software")。 It finishes with a great introduction to chaos engineering。It covers all important topics on good software architecture: stability patterns, deployability, security, how to avoid typical errors (like cascading failures, and what to do in such scenarios), 12-factor app, and more。I really liked the concept of cynical software: rather than assuming everything is going to be fine, ask what could possible go wrong, and expect (and be prepared to) the software to fail。 Failures will inevitable occur, and we have to think what to do about it。As an experienced software engineering practitioner, it was highly enjoyable for me to read the case studies presented, as their analysis and conclusions were deeply enlightening。All in all, a fantastic read, which gave me a lot of food for tought, and lots of materials and references to follow up on! 。。。more

John Hearn

Bought this for the practical guidance on stability patterns which it covers very well。 On the other hand it didn't provide the depth of technical detail I expected which may just be a problem with my own expectations。 Enjoyed the anecdotes and war stores though。 Bought this for the practical guidance on stability patterns which it covers very well。 On the other hand it didn't provide the depth of technical detail I expected which may just be a problem with my own expectations。 Enjoyed the anecdotes and war stores though。 。。。more

Adrian Bercovici Simon

This book is like a big FU to most of today's interview questions , hands down。What does it matter if you used a factory or a singleton or you used quick instead of a bubblesort when your system isn't handling timeouts , isn't limiting requests , its threads block indefinitely on hung SQL connections , or you don't maintain a steady state -aka- automatically clean the damn logs。Nygard provides real examples (own career) where a small mistake results in millions of lost revenue。He addresses all k This book is like a big FU to most of today's interview questions , hands down。What does it matter if you used a factory or a singleton or you used quick instead of a bubblesort when your system isn't handling timeouts , isn't limiting requests , its threads block indefinitely on hung SQL connections , or you don't maintain a steady state -aka- automatically clean the damn logs。Nygard provides real examples (own career) where a small mistake results in millions of lost revenue。He addresses all kinds of stability antipatterns and follows with a powerful framework on how to design systems that are resilient and fault tolerant , how to deploy to production , how to operate them so that you won't get called in the middle of the night。The funny part is that , as i am writing this , i am responsible for a system that is about to go live in the near future。 Not only has this book totally changed my priorities but it has also sent me back to the whiteboard envisioning faulty , disastrous scenarios and their corresponding solutions。 。。。more